// 官方文档
// https://cn.vitejs.dev/config/#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 在 vite 按需引入组件的样式, 项目中推荐安装两个插件vite-plugin-style-import、vite-plugin-components这两个插件。
// 先下载npm i /yarn add vite-plugin-style-import vite-plugin-components -D
// #####目前会报错######### 2.0版本需要使用的是createStyleImportPlugin不要使用styleImprot了
// 1. defineConfig: 不用 jsdoc 注解也可以获取类型提示
// 2. 找不到模块“path”或其相应的类型声明 或者 找不到名称“__dirname 安装 @types/node
const resolve = (dir: string) => path.join(__dirname, dir);
// 如果编辑器提示 path 模块找不到，则可以安装一下 @types/node -> npm i @types/node -D
import * as path  from 'path'
export default defineConfig({
  publicDir: "public", // 公共文件路径,会被复制到outDir 根目录
  base: "./", // 在生产中服务时的基本公共路径。类似publicPath，'./'避免打包访问后空白页面，要加上，不然线上也访问不了
  plugins: [
    vue(), //插件
  ],
  // 路径相关规则
  resolve: {
    // 这里就是需要配置resolve里的别名
    alias: {
      // 设置 `@` 指向 `src` 目录
      //'/@': path.resolve(__dirname, './src')
      "/@": resolve("src"), // 取相对路径别名, @表示当前的src目录路径
      "/@assets": path.resolve(__dirname, "src/assets"),
      "/@components": path.resolve(__dirname, "src/components"),
      "/@images": path.resolve(__dirname, "src/assets/images"),
      "/@views": path.resolve(__dirname, "src/views"),
      "/@store": path.resolve(__dirname, "src/store"),
    },
  },
  css: {
    // css预处理器,路径最后要加上;不然会报错
    preprocessorOptions: {
      scss: {
        // 预处理的scss文件地址
        additionalData: '@import "/@assets/public.scss";'
      },
      sass: {
        // 注意：在 sass-loader v7 中，这个选项名是 "data"
        prependData: `@import "/@assets/public.sass"`
      },
    }
  },
  server: {
    // 请求接口设置代理，根据我们项目实际情况配置
    proxy: {
      // 选项写法
      '/api': {
        // 请求连接
        target: 'https://guanchao.site',
        // 是否允许跨域
        changeOrigin: true,
        // secure: false,
        // 路由重写，将api/ 重写为空
        // rewrite: path => path.replace(/^\/api/, '')
      }
    },
    // 运行端口
    port:3006,// 设置服务启动端口号
    //https:true,
    //open: true, // 设置服务启动时是否自动打开浏览器
    cors: true // 允许跨域

  },
  build: {
    outDir: "dist",
    // 打包压缩方式
    minify: 'terser',
    assetsDir: "assets", //指定静态资源存放路径
    sourcemap: false, //是否构建source map 文件
    terserOptions: {
      // 生产环境移除console
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    },
  },

})

